[アップデート] AWS CloudShellでAmazon Q CLIが使える様になりました

[アップデート] AWS CloudShellでAmazon Q CLIが使える様になりました

Clock Icon2024.10.17

しばたです。

本日AWSよりCloudShell上でAmazon Q CLIが使える様になった旨のアナウンスがありました。

https://aws.amazon.com/about-aws/whats-new/2024/10/aws-cloudshell-amazon-q-cli/

「そういえばAmazon Q CLIって何だっけ?」となったので調べてみた結果と併せて更新内容を共有したいと思います。

Amazon Q CLIって何だっけ?

Amazon Q CLIという名前に聞き覚えが無かったので調べたところ、Amazon Q for command lineのことでかつてはCodeWhisperer for command line、さらに昔はFigであったコマンドのことでした。
ドキュメント上Amazon Q CLIとAmazon Q for command lineが混在しておりどちらの名称でも構わない様です。

https://dev.classmethod.jp/articles/amazon-codewhisperer-text-to-command/

https://dev.classmethod.jp/articles/fig-to-q-commandline/

今年の4月末にAmazon Q DeveloperがAmazon CodeWhispererと統合のうえGAした際にツールの名称も変わった様です。

https://dev.classmethod.jp/articles/amazon-q-developer-ga/

具体的にいつ頃変わったのかは不明なのですが、GitHubの履歴を追う限りではGAと同時の様です。

CodeWhisperer for command lineはcwコマンドでAmazon Qとの対話ができましたが、Amazon Q CLIでは代わりにqコマンドを使います。

AWS CloudShellでのAmazon Q CLIサポート

今回このAmazon Q CLIがAWS CloudShell環境に同梱され追加設定無しに利用できる様になりました。
CloudShellを利用可能な全リージョンでサポートされます。

コマンドの利用に対する追加設定は無いものの、CloudShellではログインユーザーの権限が使われるため利用者自身にAmazon Q Developerに対する所定の権限が必要となるのでそこはご留意ください。

その他の制約等については以下のドキュメントにまとまっているのでいくつか紹介していきます。

1. VPC向けのCloudShell環境では使えない...らしい

ドキュメントには

Currently, Amazon Q CLI features in CloudShell are not available in your CloudShell VPC environment.

とありVPC向けのCloudShell環境ではAmazon Q CLIが使えない旨の記述があったのですが、実際に試したところ特に問題無く使えてしまいました...
VPC向けの環境にするとアウトバウンド通信がVPC経由になるのでサービスエンドポイントへのアクセス(≒インターネットアクセス)ができる環境である必要はあります。

現状この挙動が不具合なのかは不明です。

2. Amazon Q CLIの履歴はCloudShell環境を削除すると消える

CloudShell自体ホームフォルダ以外は永続保存できない仕様ですのでこの点は仕方ないでしょう。

3. Amazon Q inline on the command lineはZshでのみ利用可能

これはAmazon Q CLI自体の制限ですが、シェル上でのAI入力補完はZshでのみ利用できます。

CloudShell起動時のシェルはBashですので、上記機能を使いたい場合は別途Zshを起動してください。

q chatq translateといったシンプルにAmazon Qと対話するコマンドはBash、Zshどちらでも利用可能です。

現時点での不明点

追加設定無しで利用できるため、おそらくは「Amazon Q Developer Free Tier」だと思われますがTierが明記されたドキュメントはありませんでした。

通常のFree Tierであれば50チャット/月の上限があるので使い過ぎにはご注意ください。

また、CloudShell上のAmazon Q CLIには設定画面がないためデータシェアのオプトアウト方法が不明でした。

試してみた

ここからは実際に動作確認をしてみました。

私の検証用AWSアカウントの東京リージョンでCloudShellを起動すると下図の通知が表示される様になっていました。

aws-cloudshell-supports-amazon-q-cli-01

qコマンドは/usr/local/bin/にインストールされており、引数なしで起動するとこんな感じでヘルプが表示されます。
本日時点ではVer.1.4.4が使えました。

aws-cloudshell-supports-amazon-q-cli-02

q chatコマンドでAmazon Qを対話的に利用できます。

aws-cloudshell-supports-amazon-q-cli-03

q translateコマンドか#[1]を使うと入力プロンプトに見合うコマンドが提案されます。

aws-cloudshell-supports-amazon-q-cli-04

# プロンプト文字列を入力するとq translate プロンプト文字列に変換されたうえで実行されます。

aws-cloudshell-supports-amazon-q-cli-05

Zshを起動した場合

Zshを起動するとAmazon Qの入力補完が使える旨が初期表示されます。

aws-cloudshell-supports-amazon-q-cli-06

この状態で各種コマンドを入力するとAIベースの補完により入力内容がサジェストされます。
(下図のコマンドは過去に一度も入力しておらず履歴からの補完ではない)

aws-cloudshell-supports-amazon-q-cli-07

aws-cloudshell-supports-amazon-q-cli-08

先述の通りこの機能はZshでのみ使えます。

最後に

簡単ですが以上となります。

シンプルな更新ですが思った以上に便利でした。
シェルのコメントである#を使うとAmazon Q CLIが実行される[2]様になったのでそこはご注意ください。

脚注
  1. 厳密には「#」はBashとZshで利用可能、PowerShell 7では動作しません。 ↩︎

  2. 厳密には「#」とだけ入力した場合は無視されるのでそこまで実害は無いです。「# 文字列」まで入力してはじめて「q translateコマンドに変換されます。 ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.